var express = require('express')
var userRouter = express.Router()
// 导入包（以操作json文件）
var fs = require('fs')
var path = require('path')
// 导入jsonwebtoken包
var jwt = require('jsonwebtoken')
// 设置分页查询接口
userRouter.get('/list', (req, res) => {
    // 解构赋值，得到前端给的请求参数
    var { page, count } = req.query
    // 获取用户数据
    var filepath = path.join(__dirname, '../JSON/users.json')
    var data = fs.readFileSync(filepath)
    data = data.toString() ? JSON.parse(data) : []
    // 总页数
    var totalpage = Math.ceil(data.length / count)
    if (page > totalpage) {
        page = totalpage
    }
    // 从数组中截取前端请求的那部分数据
    var newarr = data.slice((page - 1) * count, page * count)
    // 把数据返回给前端
    res.send({ status: 200, msg: '请求成功', list: newarr, totalpage: totalpage })
})
// 设置搜索接口
userRouter.get('/search', (req, res) => {
    // 解构赋值，得到前端给的请求参数
    var { searchkey } = req.query;
    // 获取用户数据
    var filepath = path.join(__dirname, '../JSON/users.json')
    var data = fs.readFileSync(filepath)
    data = data.toString() ? JSON.parse(data) : []
    // 筛选数据
    var newarr = data.filter((item) => {
        // 参数是变量，必须用构造函数创建正则表达式
        return new RegExp(searchkey).test(item.name)
    })
    //返回数据
    res.send({ status: 200, msg: '查询成功!', list: newarr })
})
// 设置登陆接口
userRouter.post('/login', (req, res) => {
    // 解构赋值，得到前端给的请求参数
    var { phone, pass } = req.body
    // 获取用户数据
    var filepath = path.join(__dirname, '../JSON/users.json')
    var data = fs.readFileSync(filepath)
    data = data.toString() ? JSON.parse(data) : []


    // 匹配数据
    var index = data.findIndex((item) => {
        return item.phone == phone && item.pass == pass
    })
    if (index != -1) {
        // 生成token
        var token = jwt.sign({ phone }, '1234', { algorithm: "HS256", expiresIn: 60 })
        res.send({ status: 200, msg: '登陆成功!', userinfo: data[index], token })
    }
    else {
        res.send({ status: 400, msg: '登陆失败!', data });
    }
})
// 设置注册接口
userRouter.post('/register', (req, res) => {
    var { phone, name, pass } = req.body
    // 获取用户数据
    var filepath = path.join(__dirname, '../JSON/users.json')
    var data = fs.readFileSync(filepath)
    data = data.toString() ? JSON.parse(data) : []
    // 查这个注册数据是否在users中
    var index = data.findIndex((item) => {
        return item.phone == phone
    })
    if (index == -1) {
        data.push({ ...req.body, group: '编辑组', isadmin: true, status: true })
        fs.writeFileSync(filepath, JSON.stringify(data), 'utf8')
        res.send({ status: 200, msg: '注册成功' })
    }
    else {
        res.send({ status: 400, msg: '注册失败' })
    }
})
// 设置删除接口
userRouter.post('/delete', (req, res) => {
    var { phone } = req.body
    // 获取用户数据
    var filepath = path.join(__dirname, '../JSON/users.json')
    var data = fs.readFileSync(filepath)
    data = data.toString() ? JSON.parse(data) : []
    // 找数据
    var index = data.findIndex((item) => {
        return item.phone == phone
    })
    if (index == -1) {
        res.send({ status: 400, msg: '删除失败' })
    }
    else {
        data.splice(index, 1)
        // 删除数据后要将json数据更新
        fs.writeFileSync(filepath, JSON.stringify(data), 'utf8')
        var newarr = data.slice(0, 2)
        res.send({ status: 200, msg: '删除失败', list: newarr })

    }
})


// 导出子路由对象
module.exports = userRouter;